Python进程之间通讯

1、
# coding : UTF-8
import multiprocessing # 导入多进程的开发模块
def send_data(conn, data): # 数据的发送
    conn.send(["小李老师", "沐言优拓", data]) # 进行列表数据的发送
def receive_data(conn): # 数据接收
    print("【接收数据】%s" % conn.recv()) # 接收管道发送来的数据
def main(): # 主函数
    conn_send, conn_recv = multiprocessing.Pipe() # 管道分为接收和发送
    # 创建两个子进程,同时将两个管道的对象传递到不同的进程处理函数之中
    process_send = multiprocessing.Process(target=send_data, args=(conn_send, "www.yootk.com"))
    process_receive = multiprocessing.Process(target=receive_data, args=(conn_recv,))
    process_send.start() # 启动进程
    process_receive.start() # 启动进程
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

2、

# coding : UTF-8
import multiprocessing, time # 导入多进程的开发模块
def put_worker(queue): # 队列生产者
    for item in range(50): # 生产50次数据
        time.sleep(1) # 延迟1秒的时间
        print("【%s】生产数据,item = %s" % (multiprocessing.current_process().name, item))
        queue.put("item = %s" % item)
def get_worker(queue): # 队列消费者
    while True: # 持续消费
        try:
            print("〖%s〗消费数据:%s" % (multiprocessing.current_process().name,
                               queue.get(block=True, timeout=2)))
        except:
            pass
def main(): # 主函数
    queue = multiprocessing.Queue() # 创建进程延迟队列
    producer_process = multiprocessing.Process(target=put_worker, name="生产者进程", args=(queue,)) # 子进程
    consumer_process = multiprocessing.Process(target=get_worker, name="消费者进程", args=(queue,)) # 子进程
    producer_process.start()  # 进程启动
    consumer_process.start()  # 进程启动
    producer_process.join() # 生产者强制执行完毕
    consumer_process.join() # 消费者强制执行完毕
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数


3、
# coding : UTF-8
import subprocess # 导入多进程的开发模块
def main(): # 主函数
    subprocess.call("dir /a", shell=True) # 允许执行Shell程序
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

4、
# coding : UTF-8
import subprocess # 导入多进程的开发模块
def main(): # 主函数
    subprocess.Popen("md yootk", shell=True, cwd="e:") # 设置了命令的执行路径
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

5、
# coding : UTF-8
import subprocess, time # 导入多进程的开发模块
def main(): # 主函数
    notepad_process = subprocess.Popen("notepad.exe", shell=True) # 此时的命令可以直接执行
    time.sleep(3) # 让进程运行3秒
    notepad_process.kill() # 销毁自己的进程
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

6、
# coding : UTF-8
import subprocess, time # 导入多进程的开发模块
def main(): # 主函数
    open_process = subprocess.Popen("python.exe", stdin=subprocess.PIPE,
                                    stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 和命令交互
    # 通过stdin实现命令的输入处理
    open_process.stdin.write("print('沐言优拓:www.yootk.com')\n".encode()) # 命令输入
    open_process.stdin.write("name = '小李老师(江湖爆称)'\n".encode()) # 命令输入
    open_process.stdin.write("print('课程讲师:%s' % name)\n".encode()) # 命令输入
    open_process.stdin.write("print(10 + 20)\n".encode()) # 命令输入
    open_process.stdin.write("'No.' + 1\n".encode()) # 命令输入
    open_process.stdin.close() # 关闭输入
    # 命令输入完成之后一定可以返回有一些数据内容,这个时候需要进行接收
    cmd_out = open_process.stdout.read() # 读取信息返回
    open_process.stdout.close()
    print(cmd_out.decode())
    cmd_error = open_process.stderr.read()
    open_process.stderr.close()
    print(cmd_error.decode())
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

7、
# coding : UTF-8
import multiprocessing, time # 导入多进程的开发模块
def worker(list, item): # 进程的处理函数
    list.append("【%s】item = %s" % (multiprocessing.current_process().name, item)) # 列表存储
def main(): # 主函数
    manager = multiprocessing.Manager() # 创建共享数据对象
    main_item = "【%s】www.yootk.com" % multiprocessing.current_process().name
    mgr_list = manager.list([main_item]) # 根据一个序列来创建列表
    job_process = [multiprocessing.Process(target=worker, args=(mgr_list, item,), name="数据操作进程-%s" % item)
                    for item in range(3)] # 创建进程列表
    for process in job_process: # 启动列表中的所有进程
        process.start()
    for process in job_process: # 所有进程强制执行完毕
        process.join()
    print("所有进程执行完毕,列表最终数据:%s" % mgr_list)
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

8、
# coding : UTF-8
import multiprocessing, time # 导入多进程的开发模块
def worker(dict, item): # 进程的处理函数
    dict.update({multiprocessing.current_process().name:item})
def main(): # 主函数
    manager = multiprocessing.Manager() # 创建共享数据对象
    main_name = multiprocessing.current_process().name # 主进程名称
    main_value = "www.yootk.com"
    mgr_dict = manager.dict(main_name=main_value) # 创建一个跨进程的字典
    job_process = [multiprocessing.Process(target=worker, args=(mgr_dict, item,), name="数据操作进程-%s" % item)
                    for item in range(3)] # 创建进程列表
    for process in job_process: # 启动列表中的所有进程
        process.start()
    for process in job_process: # 所有进程强制执行完毕
        process.join()
    print("所有进程执行完毕,列表最终数据:%s" % mgr_dict)
if __name__ == "__main__": # 判断程序执行名称
    main() # 调用主函数

你可能感兴趣的:(python,开发语言,中间件)