from multiprocessing import Pool
def do(item):
print item
...... #处理 txt (每个大概 5 分钟)
if name=='main':
items=glob.glob('*.txt')
pool=Pool(5)
pool.map(do,items)
pool.close()
pool.join()
items 为['1111.txt','2222.txt','3333.txt','4444.txt','5555.txt',......'9999.txt']
运行时会穿插打印,比如 111221.33txt
是否有办法将每项打印完整?
1
maocat 2021-01-12 11:06:55 +08:00
上锁,改同步
|
2
crackhopper 2021-01-12 11:14:19 +08:00
还可以用 queue,有个线程安全的 queue,用 multiprocessing.Manager,上面带了一个 queue 。
|
3
BrokenVns 2021-01-12 11:14:23 +08:00
再启动一个日志进程,通过 socket 把每个进程的日志发送过去,由日志进程汇总打印。
|
4
UN2758 2021-01-12 11:56:25 +08:00
可以用带队列功能的日志,比如 loguru
|
5
VYSE 2021-01-12 12:11:58 +08:00
|
6
jones2000 2021-01-12 14:18:26 +08:00
还不如每个进程一个日志文件, 每行日志加时间戳,最后显示的时候读多个文件日志,根据时间戳排序下。 省事
|