os.fork
Вилка клонирует родительский процесс, который в данном случае является вашим стеком Django. Так как вы просто хотите запустить отдельный скрипт на python, это кажется ненужным раздуванием.
подпроцесс
Использование subprocess
, как ожидается, будет интерактивным. Другими словами, хотя вы можете использовать это для эффективного запуска процесса, ожидается, что в какой-то момент вы завершите его, когда закончите. Возможно, что Python может очистить вас, если вы оставите один запущенный, но я предполагаю, что это приведет к утечке памяти.
потоки
Потоки - это определенные логические единицы. Они начинаются, когда вызывается их метод run()
, и заканчиваются, когда заканчивается выполнение метода run()
. Это делает их хорошо подходящими для создания ветви логики, которая будет работать за пределами текущей области. Однако, как вы упомянули, на них распространяется Глобальная блокировка интерпретатора.
мультипроцессинг
Это в основном нити на стероидах. Он имеет преимущества потока, но не подлежит глобальной блокировке интерпретатора и может использовать преимущества многоядерных архитектур. Однако в результате с ними сложнее работать.
Итак, ваш выбор действительно сводится к потокам или многопроцессорности. Если вы можете обойтись с потоком, и это имеет смысл для вашего приложения, переходите с потока. В противном случае используйте многопроцессорность.
os.path.isdir ()
и os.path.isfile ()
должны дать вам то, что вы хотите. Видеть:
http://docs.python.org/library/os.path.html
import os
if os.path.isdir(d):
print "dir"
else:
print "file"
Как уже говорилось в других ответах, os.path.isdir ()
и os.path.isfile ()
- это то, что вам нужно. Однако нужно иметь в виду, что это не единственные два случая. Например, используйте os.path.islink ()
для символических ссылок. Кроме того, все они возвращают False
, если файл не существует, поэтому вы, вероятно, захотите проверить с помощью os.path.exists ()
.
попробуйте следующее:
import os.path
if os.path.isdir("path/to/your/file"):
print "it's a directory"
else:
print "it's a file"