Markus Elfring <markus.elfr...@web.de> writes: > ... > I constructed another multi-threaded TCP server for my needs > (based on the available software documentation). > https://docs.python.org/3/library/socketserver.html#asynchronous-mixins > ... > elfring@Sonne:~/Projekte/Coccinelle/janitor> time /usr/bin/python3 > list_last_two_statements_from_if_branches-statistic-server3.py > "return code"|"received records"|"command output"|incidence > 0|9||63 > 0|5||5 > 0|13||2 > 0|10||5 > 0|11||7 > 0|8||3 > 0|7||3 > 0|14||3 > 0|6||4 > 0|12||3 > 0|4||2 > > real 1m23,301s > user 0m6,434s > sys 0m1,430s > > > * How should this data processing approach be adjusted so that the same number > of records will be handled in a consistent way?
Does this mean that the second number in a listing like the above should be approximatively equal? Then, obviously, your threads must communicate among themselves and wait in case they have too much run ahead. Python by itself does not garantee a fair scheduling of threads (and of course knows nothing about the number of processed records). It runs a thread for a number of instructions or until it releases the so called "GIL" (= "Global Interpreter Lock") volontarily (which it typically does when it waits or starts a typically "longer" low level operation (such as reading from a file)). Then it gives another thread a chance. When I remember right, then the underlying C library decides which other thread starts. This would mean that the level of fairness is determined by the C library. > * Which challenges from inter-process communication should be taken better > into > account for the involved programming interfaces (because of > multi-threading)? Multi-threading is "inner-process" not "inter-process". As you say to have created a "multi-threaded TCP server", I assume that your server spawns a thread for each TCP connection. Then, you can concentrate on proper multi-thread synchronization and forget about "inter-process communication challenges". -- https://mail.python.org/mailman/listinfo/python-list