zoukankan      html  css  js  c++  java
  • python3 多进程的创建(同时对同一文件进行写操作)

    # coding:utf-8
    import os
    import re
    from multiprocessing import Process
    
    
    def func(file, mode):
        with open(file, mode, encoding="utf-8") as f:
            f.write("子进程号[%s]拿到文件光标位置>>%s
    " % (os.getppid(), f.tell()))
    
    
    if __name__ == '__main__':
        print("主进程开始.")
        file_name = "filename.txt"
        p_lst = []
        for i in range(10):
            p = Process(target=func, args=(file_name, "a"))
            p.start()
            p_lst.append(p)
    
        [pp.join() for pp in p_lst]
        with open(file_name, "r", encoding="utf-8") as f:
            data = f.read()
            all_num = re.findall('d+', data)
            print("文件[%s]中的数字%s,存在的次数: %s" % (file_name, all_num, len(all_num)))
        print("主进程结束.")
    
    
    # 主进程开始.
    # 文件[filename.txt]中的数字['1712', '0', '1712', '47', '1712', '95', '1712', '143', '1712', '192', '1712', '241', '1712', '290', '1712', '339', '1712', '388', '1712', '437'],存在的次数: 20
    # 主进程结束.


    文件filename.txt的内容:
    子进程号[1712]拿到文件光标位置>>0
    子进程号[1712]拿到文件光标位置>>47
    子进程号[1712]拿到文件光标位置>>95
    子进程号[1712]拿到文件光标位置>>143
    子进程号[1712]拿到文件光标位置>>192
    子进程号[1712]拿到文件光标位置>>241
    子进程号[1712]拿到文件光标位置>>290
    子进程号[1712]拿到文件光标位置>>339
    子进程号[1712]拿到文件光标位置>>388
    子进程号[1712]拿到文件光标位置>>437
     
  • 相关阅读:
    Object-C,NSSet,不可变集合
    NYIST 860 又见01背包
    NYIST 1070 诡异的电梯【Ⅰ】
    HDU 1542 Atlantis
    HDU 4756 Install Air Conditioning
    CodeForces 362E Petya and Pipes
    HDU 4751 Divide Groups
    HDU 3081 Marriage Match II
    UVA 11404 Palindromic Subsequence
    UVALIVE 4256 Salesmen
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10964969.html
Copyright © 2011-2022 走看看