python调用pywin32打开记事本只打开了notepad.exe进程没有打开记事本编辑窗口?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python调用pywin32打开记事本只打开了notepad.exe进程没有打开记事本编辑窗口?相关的知识,希望对你有一定的参考价值。

python安装pywin32模块后注册完dll,编写python程序

import win32com.client
autoit = win32com.client.Dispatch("AutoItX3.Control")
autoit.Run("notepad.exe") —notepad.exe无法打开记事本界面,换calc.exe能打开计算机
autoit.WinWait("无标题 - 记事本", "", 5)

参考技术A 用os库呀,
例如
import os
os.system('notepad')

python 多任务 学习三

多进程

 

  概念

    进程就是程序(.exe)文件执行并且系统给予分配资源后的统称(进程就是系统分配的最小资源)。  

    对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。

    在这里,我们所说的多进程,是一个程序执行后,在主进程中新建子进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务。。

  

  进程的创建及应用:

      通过multiprocessing创建子进程,主进程会等待子进程执行完后才结束。

      

 

      结果:

      

 

   

  多任务,进程之间通信

    一个进程中创建多个子进程,进程之间是相互独立的。

    如,全局变量 a=0, 每个子进程在执行各自代码时,通过 a+=1来改变全局变量的值,但每个子进程都是从0开始+1,一直到结束,进程之间变量改变后并不会互相共享。

    

    1. 队列(Queue) 

      队列,是可以帮助子进程之间相互通信的方法。

      特点: 1. 在内存中开辟队列,执行速度快。 2. 可以设置队列中的数据个数  3.  先进先出,有序的    ......

      

 

    2. 进程池 Pool

      创建进程池及其中的子进程,主进程不会等待其结束,自己就会先结束,需要用join来等待(必须放在close,关闭进程池之后)。

      想要同时进行的任务数量不多时,可以使用multiprocessing.Process来单独创建进程;

      想要同时进行的工作很多,如复制一个文件夹下的所有文件,这时如果要同时复制多个文件,那需要创建的进程数会很多,资源浪费严重。这时,就需要进程池。

       进程池,可以看成两部分:进程池和任务队列。

        进程池-->先创建一个空的进程池对象,规定里边可以创建多少个进程数量。

        任务队列-->将所有任务获取并保存,进程池中有空闲位置时,添加下一个任务到进程池,任务执行成为进程。

      

     3. 实例:多任务copy文件夹下的文件

      目的: 文件夹 imgs中包含图像100张, 使用 多进程 + 队列 实现多任务copy及进度计算

  

      

       

      注意: 在使用multiproceesing模块下进程池库功能Pool时,原本需要使用multiprocessing.Queue调用的队列,此处改为使用multiprcessing下的Manager类中的Queue功能,具体如下调用

 

 

      

 

 

       补充: 使用Queue队列,.get()阻塞等待 , 所以可以省略主进程中的po.join()

 

以上是关于python调用pywin32打开记事本只打开了notepad.exe进程没有打开记事本编辑窗口?的主要内容,如果未能解决你的问题,请参考以下文章

Python:通过pywin32模块批量将rtf或docx另存为doc格式

python调用打印机实现打印文档

Python pywin32 学习笔记

Python pywin32 学习笔记

pywin32下载与安装

python操作word,关于win32com