qaz7327 发表于 2022-4-21 14:31:34

求助django项目中运行python程序的问题



def fileChecker(path):
    print('Child process %s.' % os.getpid())
    dirs = os.listdir(path)
    size = len(dirs)
   
    while True :
      tdirs = os.listdir(path)
      if len(tdirs) > size :
            time.sleep(5)
            filename = tdirs[-1]
            print( filename )

      size = len(tdirs)
      dirs = tdirs
      


if __name__ == '__main__':   
    print('Parent process %s.' % os.getpid())
    p1 = Process( target=main )
    p2 = Process( target=fileChecker, args=('./pictures/car_img',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()   


为何fileChecker中每次print都会输出两次

suchocolate 发表于 2022-4-22 23:29:23

代码发全,main函数呢?

qaz7327 发表于 2022-4-23 14:38:27

suchocolate 发表于 2022-4-22 23:29
代码发全,main函数呢?

main就是django默认的,没有动

suchocolate 发表于 2022-4-23 15:04:06

qaz7327 发表于 2022-4-23 14:38
main就是django默认的,没有动

代码不全

qaz7327 发表于 2022-4-23 16:02:16

suchocolate 发表于 2022-4-23 15:04
代码不全

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os,sys,time

from matplotlib.cbook import print_cycles
from plate_detect import imgChecker,getPlate
from multiprocessing import Process,Queue,Pool
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import threading



def fileChecker(path):
    cnt = 0
    print('Child process %s.' % os.getpid())
    dirs = os.listdir(path)
    size = len(dirs)
   
    while True :
      lock.acquire()

      tdirs = os.listdir(path)
      if len(tdirs) > size :
            time.sleep(5)
            filename = tdirs[-1]
            print( filename )
            cnt += 1
            print( 'cnt:%s'%(cnt) )

      size = len(tdirs)
      dirs = tdirs
      
      lock.release()



def main():
    """Run administrative tasks."""
    print('Child process %s.' % os.getpid())
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'parkSystem.settings')
    try:
      from django.core.management import execute_from_command_line
    except ImportError as exc:
      raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
      ) from exc

    execute_from_command_line(sys.argv)
   


if __name__ == '__main__':   
    print('Parent process %s.' % os.getpid())
    p1 = Process( target=main )
    p2 = Process( target=fileWatcher, args=('.\\pictures\\car_img',))
    #p2 = Process( target=imgChecker, args=('./pictures/car_img',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

suchocolate 发表于 2022-4-25 00:37:26

从代码逻辑看,只有列表tdirs的长度比dirs长度大,就会打印。
而dirs和tdirs的长度要取决于你这个./pictures/car_img 文件夹运行时文件的情况,这个是是代码中看不出来的。
你运行时观察一下文件中文件的情况。

qaz7327 发表于 2022-4-25 10:59:17

本帖最后由 qaz7327 于 2022-4-25 11:01 编辑

suchocolate 发表于 2022-4-25 00:37
从代码逻辑看,只有列表tdirs的长度比dirs长度大,就会打印。
而dirs和tdirs的长度要取决于你这个./pictur ...

我这代码是想在文件夹放入新文件时输出文件名,但是不知道为啥运行时输出了两遍
http://tiebapic.baidu.com/forum/w%3D580/sign=4d6cf162ac50352ab16125006342fb1a/95c4442309f79052efbdb9eb49f3d7ca7acbd522.jpg?tbpicau=2022-04-27-05_10ccc65ecdc8d9ceafb0e9da2e3b1f67
页: [1]
查看完整版本: 求助django项目中运行python程序的问题