
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 Jan 12, 2021 上锁,改同步 |
2 crackhopper Jan 12, 2021 还可以用 queue,有个线程安全的 queue,用 multiprocessing.Manager,上面带了一个 queue 。 |
3 BrokenVns Jan 12, 2021 再启动一个日志进程,通过 socket 把每个进程的日志发送过去,由日志进程汇总打印。 |
4 UN2758 Jan 12, 2021 可以用带队列功能的日志,比如 loguru |
5 VYSE Jan 12, 2021 |
6 jones2000 Jan 12, 2021 还不如每个进程一个日志文件, 每行日志加时间戳,最后显示的时候读多个文件日志,根据时间戳排序下。 省事 |